/*
 * @author				: Leandro Gimenez
 * @create				: 12/03/2011
 * @last modified		: 30/07/2011
 * @version				: 2.0
 * @description			: Manutenção de projetos
*/



var functionsCarregaProjeto = {
	
	Projeto_codigo: ""
		
	,carregaTiposProjeto: function(){
		var objparams = {
		}
		capturaTiposProjeto.load({params : objparams, callback:functionsCarregaProjeto.capturaProjeto});
	}	
	
	,capturaProjeto: function(){
		var objparams = {
			action: "capturaProjeto"
			,codigoProjeto: functionsCarregaProjeto.Projeto_codigo
		}
		capturaProjeto.load({params : objparams, callback:functionsCarregaProjeto.returnCapturaProjeto});
		
	}
	
	,returnCapturaProjeto: function(record, options, success){
		formProjeto.getForm().loadRecord( record[0] );
		
		if(record[0].data.dataRealizacao == "0000-00-00"){
			formProjeto.getForm().findField("dataRealizacao").setValue("");
		}
		
		functionsVoluntariosProjeto.listaVoluntariosProjeto(functionsCarregaProjeto.Projeto_codigo);
	
	}
	
}


/*
 * @description: Variável que contém todas as funções de manipulação utilizadas
 * @author: Juliano Zinni
 * @since: 28/07/2011
*/
var functionsProjetoForm = {
		
	init: function(){
		this.resetForm();
		this.capturaTiposProjeto();	
	}
		
	,capturaTiposProjeto: function(){
		var objparams = {
			action: "listarTiposProjetos"
		}
		capturaTiposProjeto.load({params : objparams});
		
	}	
	
	
	/*
	 * @description: Função responsável por incluir novo projeto
	 * @author: Juliano Zinni
	 * @since: 29/07/2011
	*/
	,insereRegistro: function(button){
		
		var form = formProjeto.getForm();		
		
		if(form.isValid())
		{
			this.params = formProjeto.form.getValues(true);
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				//url: baseURL + '/data/insereProjeto.json',
				url: baseURL + '/service/index.php?controller=ProjetoController&service=inserir',
				success:  function(result){
				
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						windowProjetoForm.hide();
						Ext.getCmp('projeto').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
	
				},
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		}
		
	}
	
	/*
	 * @description: Função responsável por alterar projeto
	 * @author: Juliano Zinni
	 * @since: 29/07/2011
	*/
	,alteraRegistro: function(button){
		
		var form = formProjeto.getForm();
		
		
		if(form.isValid())
		{
			this.params = formProjeto.form.getValues(true);
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Alterando...'});

			Ext.Ajax.request({
				//url: baseURL + '/data/alteraProjeto.json',
				url: baseURL + '/service/index.php?controller=ProjetoController&service=alterar',
				success:  function(result){
				
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						windowProjetoForm.hide();
						Ext.getCmp('projeto').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
	
				},
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		
		}
		
	}
	
	,confimaCancelamento: function(){
		Ext.MessageBox.confirm('Confirmação de cancelamento','Realmente deseja cancelar essa operação?', function(btn)
		{
			if(btn == 'yes')
			{
				windowProjetoForm.hide();
			}
		}, this);

	}

	,resetForm: function(){
		formProjeto.form.reset();
	}
		
}

/*
 * @description: Funções para manipulação do grid de voluntários alocados no projeto
 * @author: Juliano Zinni
 * @since: 14/09/2011
*/


var functionsVoluntariosProjeto = {
	
	listaVoluntariosProjeto: function(codigoProjeto){
		var objparams = {
			codigoProjeto: codigoProjeto
		}
		listaVoluntariosProjeto.load({params : objparams, callback: this.returnListaVoluntariosProjeto});
	}
	
	,returnListaVoluntariosProjeto: function(record, options, success){
		if(success){
			
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento da listagem dos voluntários",
				type: 'error'
			});
		}
	}
	
}




/*
 * @description: Store responsável por listar os voluntários alocados no projeto
 * @author: Juliano Zinni
 * @since: 14/09/2011
*/

var listaVoluntariosProjeto = new Ext.data.JsonStore({
    storeId: 'listaVoluntariosProjeto',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=listarVoluntarioProjeto',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'nomeVoluntario', direction: 'ASC'},
    fields: [
		{
			name		: 'codigoVoluntario'
			,mapping	: 'codigo'
		}
		,{
			name		: 'nomeVoluntario'
			,mapping	: 'nome'
		}
		,{
			name		: 'qtdAtividades'
			,mapping	: 'qtdAtividades'
		}
    ]
});




/*
 * @description: Store responsável por capturar os dados de um projeto específico
 * @author: Juliano Zinni
 * @since: 28/07/2011
*/
var capturaProjeto = new Ext.data.JsonStore({
    storeId: 'capturaProjeto',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=capturarProjeto',
    //url: baseURL + '/data/capturaProjeto.json',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'nome', direction: 'ASC'},
    fields: [
		'codigo'
		, 'TipoProjeto_codigo'
		, 'nome'
		, 'beneficios'
		, 'objetivos'
		, 'idealizadores'
		, 'dataRealizacao'
		, 'patrocinio'
		, 'meta'
		, 'dataInicio'
		, 'dataFim'
		, 'situacao'
    ]
});	

var capturaTiposProjeto = new Ext.data.JsonStore({
    storeId: 'capturaTiposProjeto',
    url: baseURL + '/service/index.php?controller=TipoProjetoController&service=listarTiposProjeto',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'nomeTipoProjeto', direction: 'ASC'},
    fields: [
		{
		    name: 'codigoTipoProjeto',
		    mapping: 'codigo'
		}
		,{
            name: 'nomeTipoProjeto',
            mapping: 'nome'
        }
    ]
});	


var abaDadosPrincipais = {
	title: 'Principal'
	,iconCls: 'aba_manterProjeto'
	,items:[
		{
			xtype: 'fieldset'
			, title: 'Dados Projeto'
			, collapsible: true
			, defaultType: 'textfield'
			, defaults:{
				anchor: '100%'
			}	
			,items: [
				{
					xtype: 'hidden'
					,name: 'codigo'
					,id: 'codProjForm'
				}
				,{
					xtype: 'combo'
					,fieldLabel: 'Tipo de Projeto'
					,name: 'TipoProjeto_codigo'
					,store: capturaTiposProjeto
					,displayField: 'nomeTipoProjeto'
					,valueField: 'codigoTipoProjeto'
					,hiddenName: 'TipoProjeto_codigo'
					,mode: 'local'
					,typeAhead: true
					,allowBlank: false
					,editable: false
					,triggerAction: 'all'
				}
				,{
					fieldLabel:'Nome'
					,name:'nome'
					,allowBlank: false
				}						
				,{
					xtype: 'datefield'
					,fieldLabel:'Data Realização'
					,name:'dataRealizacao'
					,allowBlank: true
				}
				
				,{
					xtype: 'combo'
					,fieldLabel: 'Patrocínio'
					,name: 'patrocinio'
					,store: [['S','Sim'],['N','Não']]
					,displayField: 'patrocinio'
					,valueField: 'codigo'
					,hiddenName: 'patrocinio'
					,mode: 'local'
					,editable: false
					,typeAhead: true
					,triggerAction: 'all'
				}
				,{
					xtype: 'datefield'
					,fieldLabel:'Data Início'
					,name:'dataInicio'
					,allowBlank: false
				}
				,{
					xtype: 'datefield'
					,fieldLabel:'Data Fim'
					,name:'dataFim'
					,allowBlank: false
				}
				,{
					xtype: 'combo'
					,fieldLabel: 'Situação'
					,name: 'situacao'
					,store: [['S','Ativo'],['N','Inativo']]
					,displayField: 'situacao'
					,valueField: 'codigo'
					,editable: false
					,hiddenName: 'situacao'
					,mode: 'local'
					,typeAhead: true
					,triggerAction: 'all'
					,allowBlank: false
				}
			]
		}

	]
	
}


var abaDetalhes = {
	title: 'Detalhes do Projeto'
	,iconCls: 'aba_detalhesProjeto'
	,items:[
		{
			xtype: 'fieldset'
			, title: 'Dados Projetos'
			, collapsible: true
			, defaultType: 'textfield'
			, defaults:{
				anchor: '100%'
				,width: '100%'
			}	
			,items: [
										
				{
					xtype:'textarea'
					,fieldLabel:'Benefícios'
					,name:'beneficios'
					,anchor:'100%'
				}
				,{
					xtype:'textarea'
					,fieldLabel:'Objetivos'
					,name:'objetivos'
					,anchor:'100%'
				}
				,{
					xtype:'textarea'
					,fieldLabel:'Idealizadores'
					,name:'idealizadores'
					,anchor:'100%'
				}
				,{
					xtype:'textarea'
					,fieldLabel:'Meta'
					,name:'meta'
					,anchor:'100%'
				}
				
			]
		}

	]
	
}



var gridVoluntariosProjeto = new Ext.grid.GridPanel({
	id: 'voluntariosProjeto'
	,stripeRows	: true	
	,loadMask	: true
	,width: '100%'
	,height: 350
	,border		: true
	,tbar: []
	,viewConfig:{
		emptyText		: 'Nenhum registro encontrado'
		,deferEmptyText : false
	}
	,store: listaVoluntariosProjeto
	,columns:[
		{
			dataIndex	: 'codigoVoluntario'
			,header		: 'Cod'
			,width		: 50					
		}
		,{
			dataIndex	: 'nomeVoluntario'
			,id			: 'nomeVoluntario' // necessário id para utilizar autoExpandColumn
			,header		: 'Nome'
			,width		: 300
		}
		,{
			dataIndex	: 'qtdAtividades'
			,header		: 'Quantidade Atividades'
			,width		: 120					
		}
		
		
	]
	
	
});



var abaVoluntariosAlocados = {
	title: 'Voluntários Alocados'
	,iconCls: 'aba_manterProjeto'
	,items: gridVoluntariosProjeto
	//,html: '<b>Aqui vai o grid de voluntários alocados no projeto</b>'
}




var tabProjeto = new Ext.TabPanel({
	activeItem: 0
	,border: false
	,deferredRender: false
	,plain:true
	,autoScroll: true
	,ref: 'tabFormContato'

	,defaults:{
		layout: 'form'
		,labelWidth: 90 
		,defaultType: 'textfield'
		,autoHeight: true
		,bodyStyle: 'padding: 8px'
		,defaults: {
			anchor: '100%'
		}
	}
		
	,items: [abaDadosPrincipais, abaDetalhes, abaVoluntariosAlocados]
});


var formProjeto = new Ext.form.FormPanel({
	layout: 'form'
	,border: false
	,items: [tabProjeto]
});


var windowProjetoForm = new Ext.Window({
	width: 800
	,title: 'Manter Projeto'
	,height: 550
	,modal:true
	,layout: 'fit'
	,closeAction:'hide'
	,constrain	: true
	,maximizable: true
	,items: this.formProjeto
	,buttons:[
		{
			text: 'Salvar'
			, iconCls: 'bt_salvar'
			, scope	: this
			, handler: function(){
				
				if(Ext.getCmp('codProjForm').getValue() !=  ""){
					functionsProjetoForm.alteraRegistro();
				}else{
					functionsProjetoForm.insereRegistro();
				}
				
			}
		 }
		
		,{
			text: 'Cancelar'
			, iconCls: 'bt_cancelar'
			, scope	: this
			, handler: functionsProjetoForm.confimaCancelamento
		}
	]

})